/**
 * Created with IntelliJ IDEA.
 * Author: huangfu.daohui
 * Date: 2018/7/10
 * Time: 14:36
 * Version: 1.0
 * Description:代理模式。静态代理、动态代理：一个类代表另一个类的功能。
 * https://www.cnblogs.com/fengmingyue/p/6092151.html
 * https://www.cnblogs.com/cenyu/p/6289209.html
 * https://www.cnblogs.com/cenyu/p/6289209.html
 * <p>
 * 意图：为其他对象提供一种代理以控制对这个对象的访问。
 * <p>
 * 主要解决：在直接访问对象时带来的问题，比如说：要访问的对象在远程的机器上。在面向对象系统中，有些对象由于某些原因（比如对象创建开销很大，或者某些操作需要安全控制，或者需要进程外的访问），直接访问会给使用者或者系统结构带来很多麻烦，我们可以在访问此对象时加上一个对此对象的访问层。
 * <p>
 * 何时使用：想在访问一个类时做一些控制。
 * <p>
 * 如何解决：增加中间层。
 * <p>
 * 关键代码：实现与被代理类组合
 * <p>
 * 优点： 1、职责清晰。 2、高扩展性。 3、智能化。
 * <p>
 * 缺点： 1、由于在客户端和真实主题之间增加了代理对象，因此有
 **/
package com.huangfu.learning.javabase.java.pattern.structure.proxy;